@强制输出
@输出名("短视频解析")
类 短视频解析 : 窗口

	@布局配置([[根布局=真,宽度=-1,高度=-1,纵向布局=真,背景颜色=-1576716]])
	变量 线性布局1 : 线性布局
	@布局配置([[父布局=线性布局1,宽度=-1,高度DP=45,左内边距DP=18,右内边距DP=18,@上外边距DP=10]])
	变量 相对布局1 : 相对布局
	@布局配置([[父布局=相对布局1,对齐方式=16,内容="解析",粗体=真,字体大小=20,字体颜色=-16777216,高度=-1,ID=1]])
	变量 文本框1 : 文本框
	@布局配置([[父布局=相对布局1,高度=-1,内容="短视频",对齐方式=16,@位于某组件右边=1,@左外边距DP=1,纵向偏移DP=2,字体大小=16,粗体=真]])
	变量 文本框2 : 文本框
	@布局配置([[父布局=相对布局1,高度=-1,@位于布局右边=真,对齐方式=17]])
	变量 线性布局2 : 线性布局
	@布局配置([[父布局=线性布局2,图片资源="../../../素材/Png/3916718.png",宽度DP=21,高度DP=21]])
	变量 图片框1 : 图片框
	@布局配置([[父布局=线性布局1,宽度=-1,高度DP=4,对齐方式=17,右内边距DP=20,左内边距DP=20,上内边距DP=1,下内边距DP=1]])
	变量 线性布局9 : 线性布局
	@布局配置([[父布局=线性布局1,宽度=-1,高度=-2,对齐方式=1,纵向布局=真,左内边距DP=20,右内边距DP=20,上内边距DP=10]])
	变量 线性布局3 : 线性布局
	@布局配置([[父布局=线性布局3,宽度=-1,高度DP=40,圆角=75,卡片阴影=0,@下外边距DP=15]])
	变量 卡片布局1 : 卡片布局
	@布局配置([[父布局=卡片布局1,宽度=-1,高度=-1,透明度=1.0,背景颜色=-328966]])
	变量 线性布局4 : 相对布局
	@布局配置([[父布局=线性布局4,宽度=-1,高度=-1,左内边距DP=15,右内边距DP=3,上内边距DP=2,下内边距DP=2,@位于某组件左边=1]])
	变量 线性布局8 : 线性布局
	@布局配置([[父布局=线性布局8,宽度=-1,高度=-1,内边距=0,背景颜色=16777215,提示文本="",单行输入=真,对齐方式=16,字体颜色=-16777216,单行显示=真,字体大小=16,粗体=真,内容="",显示光标=真]])
	变量 输入内容 : 编辑框
	@布局配置([[父布局=线性布局4,宽度DP=60,高度=-1,ID=1,@位于布局左边=假,@位于布局右边=真]])
	变量 解析按钮 : 相对布局
	@布局配置([[父布局=解析按钮,圆角=75,卡片阴影=0,宽度=-1,横向偏移DP=-3,高度DP=35,@位于布局中间=真,@位于布局左边=假,@位于布局右边=真]])
	变量 卡片布局4 : 卡片布局
	@布局配置([[父布局=卡片布局4,宽度=-1,高度=-1,背景颜色=-11433996]])
	变量 线性布局7 : 线性布局
	@布局配置([[父布局=解析按钮,圆角=0,卡片阴影=0,高度DP=35,@位于布局中间=真,背景颜色=-11433996,@位于布局右边=假,宽度DP=25,@位于布局左边=真]])
	变量 卡片布局5 : 卡片布局
	@布局配置([[父布局=解析按钮,@位于布局中间=真,@位于布局右边=假,内容="解析",粗体=真,字体大小=17,@右外边距DP=5,字体颜色=-1,@位于布局左边=假,横向偏移DP=-2]])
	变量 文本框3 : 文本框
	@布局配置([[父布局=线性布局1,宽度=-1,高度=-1,左内边距DP=20,右内边距DP=20,对齐方式=17,下内边距DP=8]])
	变量 线性布局5 : 线性布局
	@布局配置([[父布局=线性布局5,宽度=-1,高度=-2,卡片阴影=0,圆角=24,可视=假,背景颜色=-1576716]])
	变量 播放器界面 : 卡片布局
	@布局配置([[父布局=播放器界面,宽度=-1,高度=-2,对齐方式=17,背景颜色=-1576716]])
	变量 线性布局6 : 线性布局
	@布局配置([[父布局=线性布局6,宽度=-1,高度=-2]])
	变量 视频播放器1 : 视频播放器
	@布局配置([[父布局=线性布局5,宽度=-1,高度=-1,显示滑块条=假,始终显示快速滚动条=假,列数=1,可视=假]])
	变量 自定义宫格列表框1 : 自定义宫格列表框
	@布局配置([[父布局=线性布局5,宽度=-1,高度=-1,可视=假]])
	变量 分页布局1 : 分页布局


	变量 当前视频链接:文本
	变量 当前视频信息:文本=""
	变量 下载视频链接:文本
	变量 下载视频标题:文本
	变量 抖音图集集合:文本集合
	变量 短视频解析接口:文本="https://api.yujn.cn/api/jiexi.php?type=json&msg="
	变量 下载路径=取存储卡路径() + "/"+全局配置.软件名称+"/短视频解析/"
	变量 网络工具1:网络工具
	变量 正则后链接:文本

	事件 短视频解析:被启动()
		提交到新线程运行()
		延时(500)
		截取链接()	
		结束提交到新线程()
	结束 事件

	事件 短视频解析:创建完毕()
		订阅事件()
		本对象.屏幕方向 = 1
		本对象.显示标题栏 =假
		本对象.状态栏字体黑色 = 真
		本对象.状态栏颜色 = -1576716
		本对象.导航栏颜色 = -1576716
		code getWindow().setSoftInputMode(2);
		播放器界面.可视 = 假
		自定义宫格列表框1.可视 = 假
		分页布局1.可视=假
	结束 事件

	方法 截取链接()
		变量 监测链接 : DX基础对话框
		变量 当前分享的链接:文本=取剪切板文本(本对象)
		变量 表达式 = "http[s]?:\\/\\/[\\w.]+[\\w]*\\S+"
		变量 正则后链接 = 正则表达式.正则匹配(当前分享的链接,表达式)
		如果 取数组长度(正则后链接) != 0 则
			监测链接.标题("剪切板检测到链接是否解析？")
			监测链接.内容(正则后链接[0].到文本())
			监测链接.按钮纵向显示(真)
			监测链接.样式(DX样式.MIUI)
			监测链接.按钮1("确定")
			监测链接.按钮2("取消")
			监测链接.显示()
		否则	
			监测链接.关闭()
		结束 如果
		事件 监测链接:按钮1被单击() : 逻辑型
			视频播放器1.停止播放()
			播放器界面.可视 = 假
			显示加载("正在解析")
			当前视频链接=输入内容.内容
			开始解析(正则后链接[0].到文本())
			返回 假
		结束 事件
		事件 监测链接:按钮2被单击() : 逻辑型
			返回 假
		结束 事件
	结束 方法

	事件 解析按钮:被单击()
		如果 输入内容.内容==""则
			弹出提示("请输入视频链接")
		否则
			视频播放器1.停止播放()
			播放器界面.可视 = 假
			显示加载("正在解析")
			当前视频链接=输入内容.内容
			//这个表达式也可以 "http[s]?:\\/\\/[\\w.-]+[\\w\\/-]*[\\w.-]*\\??[\\w=&:\\-\\+\\%]*[/]"
			变量 表达式 = "http[s]?:\\/\\/[\\w.]+[\\w]*\\S+"
			正则后链接 = 正则表达式.正则匹配(当前视频链接,表达式)[0]
			开始解析(正则后链接)
		结束 如果

	结束 事件

	方法 开始解析(视频解析链接:文本)
		网络工具1.取网页源码(短视频解析接口+视频解析链接)
	结束 方法
变量 下载图片链接:文本
变量 下载图片标题:文本
变量 当前图集内容:文本
	事件 网络工具1:取网页源码结束(结果 : 文本,内容 : 字节[],cookie : 文本)
		播放器界面.可视 = 假
		自定义宫格列表框1.可视 = 假
		分页布局1.可视=假
		变量 根对象 : JSON对象 = 结果
		变量 msg : 文本 = 根对象.取文本("msg")
		关闭加载()
		如果 msg.寻找文本("解析成功") != -1 则
			变量 图集集合:JSON数组 = 根对象.取JSON数组("images")
			变量 视频链接 : 文本 = 根对象.取文本("video")
			变量 标题:文本=根对象.取文本("title")
			如果 视频链接 == "null" 则 
				/*
				置剪切板文本(本对象,图集集合.到文本())
				自定义宫格列表框1.可视=真
				变量 图集图片集合:文本集合
				循环(图集索引, 0, 图集集合.长度)
					图集图片集合.添加成员(图集集合.取文本(图集索引))
				结束 循环
				自定义宫格列表框1.更新项目(图集图片集合.长度)
				事件 自定义宫格列表框1:加载布局(索引 : 整数,项目布局 : 组件容器) : 组件容器
					变量 项目布局1:图集图片布局
					Glide图片加载.加载图片(项目布局1.图片框1,图集图片集合[索引])
					返回 项目布局1
				结束 事件
				事件 自定义宫格列表框1:项目被单击(被单击组件 : 可视化组件,单击索引 : 整数)
					弹出提示(标题+单击索引.到文本()+".png")
				结束 事件
*/
				分页布局1.可视 = 真
				
				循环(图集索引, 0, 图集集合.长度)
					变量 项目布局1:图集图片布局
					Glide图片加载.加载图片(项目布局1.图片框1,图集集合.取文本(图集索引))
					分页布局1.添加页面(项目布局1)
					当前图集内容=图集集合.到文本()
					事件 项目布局1.图片框1:被单击()
						
						下载图片链接=图集集合.取文本(分页布局1.取当前页面索引())
						如果 标题=="" 或 标题=="null" 则
							下载图片标题=时间操作.取格式时间("yyyy年M月d日H时m分s秒")+"_"+分页布局1.取当前页面索引().到文本()+".png"
						否则
							下载图片标题=标题+分页布局1.取当前页面索引().到文本()+".png"
						结束 如果
						变量 下载提示:DX基础对话框
						下载提示.样式(DX样式.MIUI)
						下载提示.标题("系统提示")
						下载提示.内容("你需要?")
						下载提示.按钮1("下载图片")
						下载提示.按钮3("复制图集")
						下载提示.按钮2("取消")
						下载提示.按钮纵向显示(真)
						下载提示.显示()
						事件 下载提示:按钮1被单击() : 逻辑型
							下载提示.关闭()
							变量 等待框2 : DX加载
							变量 网络工具4:网络工具
							等待框2.内容("正在下载")
							等待框2.显示()
							网络工具4.下载(下载图片链接,下载路径+下载图片标题)
							事件 网络工具4:正在下载(进度 : 小数)
								等待框2.进度(进度/100)
							结束 事件
							事件 网络工具4:下载结束(cookie : 文本)
								提交到新线程运行()
								等待框2.类型(DX加载.类型_成功)
								等待框2.内容("下载成功")
								延时(1800)
								等待框2.关闭()
								结束提交到新线程()
							结束 事件
							返回 假
						结束 事件

						事件 下载提示:按钮3被单击() : 逻辑型
							如果 当前图集内容 !="" 则
								置剪切板文本(本对象,当前图集内容)
								弹出提示("图集连接已复制")
							结束 如果
							返回 假
						结束 事件
					结束 事件
				结束 循环

			否则
				如果 标题=="" 或 标题=="null" 则
					下载视频标题=时间操作.取格式时间("yyyy年M月d日H时m分s秒")+".mp4"
				否则
					下载视频标题=标题+".mp4"
				结束 如果
				播放器界面.可视 = 真
				下载视频链接=视频链接
				视频播放器1.置播放路径(视频链接,真)
				视频播放器1.开始播放()
			结束 如果
			当前视频信息="标题："+下载视频标题.替换(".mp4","")+"\n封面："+根对象.取文本("photo")+"\n图集："+图集集合+"\n视频链接："+下载视频链接+"\n\n"
		否则
			显示加载错误(msg)
		结束 如果
	结束 事件

	事件 图片框1:被单击()
		变量 提示:DX基础对话框
		提示.样式(DX样式.IOS)
		提示.标题("系统提示")
		提示.内容("点击视频即可下载")
		提示.按钮1("确定")
		提示.显示()
	结束 事件

	事件 图片框1:被长按()
		如果 当前视频信息 !="" 则
			置剪切板文本(本对象,当前视频信息)
			弹出提示("视频详情已复制")
		结束 如果
	结束 事件

	事件 视频播放器1:被单击()
		变量 下载提示:DX基础对话框
		下载提示.样式(DX样式.MIUI)
		下载提示.标题("系统提示")
		下载提示.内容("你需要?")
		下载提示.按钮1("下载视频")
		下载提示.按钮3("复制链接")
		下载提示.按钮2("取消")
		下载提示.按钮纵向显示(真)
		下载提示.显示()
		事件 下载提示:按钮1被单击() : 逻辑型
			下载提示.关闭()
			变量 等待框2 : DX加载
			变量 网络工具3:网络工具
			等待框2.内容("正在下载")
			等待框2.显示()
			网络工具3.下载(下载视频链接,下载路径+下载视频标题)
			事件 网络工具3:正在下载(进度 : 小数)
				等待框2.进度(进度/100)
			结束 事件
			事件 网络工具3:下载结束(cookie : 文本)
				提交到新线程运行()
				等待框2.类型(DX加载.类型_成功)
				等待框2.内容("下载成功")
				延时(1800)
				等待框2.关闭()
				结束提交到新线程()
			结束 事件
			返回 假
		结束 事件

		事件 下载提示:按钮3被单击() : 逻辑型
			如果 当前视频信息 !="" 则
				置剪切板文本(本对象,当前视频信息)
				弹出提示("视频信息已复制")
			结束 如果
			返回 假
		结束 事件

	结束 事件

	//视频播放完成时触发该事件
	事件 视频播放器1:视频播放完成()
		视频播放器1.重新播放()
	结束 事件


	@虚拟方法
	方法 返回键被按下()
		如果 输入内容.内容==""则
			视频播放器1.停止播放()
			父对象.返回键被按下()
		否则
			输入内容.内容=""
		结束 如果
	结束 方法

结束 类

类 图集图片布局:组件容器

	@布局配置([[根布局=真,宽度=-1,高度=-1]])
	变量 线性布局1 : 线性布局
	@布局配置([[父布局=线性布局1,宽度=-1,高度=-2,圆角=24,卡片阴影=0,@外边距DP=2,@下外边距DP=5]])
	变量 卡片布局1 : 卡片布局
	@布局配置([[父布局=卡片布局1,宽度=-1,高度=-2]])
	变量 线性布局2 : 线性布局
	@布局配置([[父布局=线性布局2,宽度=-1,高度=-2]])
	变量 图片框1 : 图片框

结束 类